home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / source / hobbspr2 / tile.h < prev    next >
C/C++ Source or Header  |  1992-08-24  |  2KB  |  101 lines

  1. // Hobbes Sprite Library
  2. // Court Demas - court+@cmu.edu
  3.  
  4. #pragma hdrfile "Tile.SYM"
  5. #ifndef TILE_H
  6. #define TILE_H
  7.  
  8. #include "hobbes.h"
  9. #include "sprite.h"
  10. #include "etc.h"
  11.  
  12.  
  13. #define     MAX_TILES            512
  14. #define        MAX_MAP_WIDTH        200
  15. #define        MAX_MAP_HEIGHT        200
  16.  
  17. typedef     unsigned int         Tile_Handle;
  18. enum Tile_Type { BLANK, SOLID, BITMAP };
  19. typedef enum Tile_Type TILE_TYPE;
  20.  
  21.  
  22. class TTile : TBitmap {
  23.   protected:
  24.     TILE_TYPE        Type;
  25.     COLOR            Color;
  26.     TBitmap            *BMP;
  27.  
  28.   public:
  29.             TTile(TILE_TYPE tt, COLOR c) {
  30.                 Type = tt; Color=c;
  31.                 }
  32.             TTile(TILE_TYPE tt, TBitmap *bmp) {
  33.                 Type = tt; BMP = bmp;
  34.                 }
  35.  
  36.     void    Draw(int x, int y);
  37.     int        Tile_Width,
  38.             Tile_Height;
  39. };
  40.  
  41.  
  42.  
  43. class TTileMap {
  44.  
  45.   protected:
  46.   public:
  47.     TTile             *Tiles[MAX_TILES];
  48.     Tile_Handle        NumTiles;
  49. //    Tile_Handle        huge HandleMap[MAX_MAP_WIDTH][MAX_MAP_HEIGHT];
  50.     Tile_Handle        huge **HandleMap;
  51.     int                Tile_Width,
  52.                     Tile_Height;
  53.     int                MODdeltaX;
  54.     int                RightLocLimit,
  55.                     LeftLocLimit;
  56.  
  57.     int             cc;
  58.     TCoordinate        MapLoc;
  59.     TCoordinate        DisplayStart;
  60.     TRectangle        MapDisplayPort;
  61.     TRectangle        MapVirtualPort;
  62.  
  63.                 TTileMap(int w, int h, int dsx, int dsy) {
  64.                     HandleMap = (Tile_Handle huge**) farmalloc (sizeof(Tile_Handle*)*MAX_MAP_WIDTH);
  65.                     for (int i=0; i<MAX_MAP_HEIGHT; i++)
  66.                         HandleMap[i] = (Tile_Handle*) farmalloc (sizeof(Tile_Handle)*MAX_MAP_HEIGHT);
  67.                     cc=0;
  68.                     NumTiles = 0;
  69.                     MODdeltaX = 0;
  70.                     MapLoc.SetXY(0,0);
  71.                     Tile_Width = w;
  72.                     Tile_Height = h;
  73.                     LeftLocLimit = 0;
  74.                     RightLocLimit = Virtual_Width_Pix / Tile_Width;
  75.                     DisplayStart.SetXY(dsx, dsy);
  76.                     MapVirtualPort.Set(0,0,Virtual_Width_Pix,Virtual_Height_Pix);
  77.                 }
  78.  
  79.     void        SetMapDisplayPort(int sx, int sy, int ex, int ey) {
  80.                     MapDisplayPort.Set(sx,sy,ex,ey);
  81.                 }
  82.     void        SetMapVirtualPort(int sx, int sy, int ex, int ey) {
  83.                     MapVirtualPort.Set(sx,sy,ex,ey);
  84.                 }
  85.  
  86.     // Create a new tile type, and then return a handle to it
  87.     Tile_Handle    NewTile        (COLOR c);
  88.     Tile_Handle    NewTile        (TBitmap *bmp);
  89.  
  90.     // Set a position on the tile map
  91.     void        SetTile        (int x, int y, Tile_Handle th);
  92.  
  93.     void        Dirty        (TSprite *);
  94.     void        DrawWholeMap(void);
  95.  
  96.     void        Move        (int dx);
  97.     void        MoveLeft    (int dx);
  98.     void        MoveRight    (int dx);
  99. };
  100.  
  101. #endif